package cn.edu.ctbu.api01.service;

import cn.edu.ctbu.api01.domain.Student;
import cn.edu.ctbu.api01.repository.StudentRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class StudentService {

    @Autowired
    private StudentRepository StudentRepository;
    @Autowired
    private StudentRepository studentRepository;

    public List<Student> findAll() {
        return StudentRepository.findAll();
    }

    /**
     * 按id进行查询
     * @param id 主键，整数
     * @return
     */
    public Student findById(Integer id) {

        return StudentRepository.findById(id).orElse(null);
    }

    /**
     * 按 工号no 进行查询
     * @param no  工号
     * @return
     */
    public Student findByNo(String no) {
        return StudentRepository.findByNo(no);
    }

    /**
     * 按姓名进行查询，Like
     * @param name 主键，整数
     * @return
     */
    public List<Student> findByName(String name) {

        return StudentRepository.findByNameLike(name);
    }

    /**
     * 插入
     *
     * @param student
     * @return
     */
    public Student insert(Student student) {
        StudentRepository.save(student);
        return student;
    }

    /**
     * 保存
     * @param student
     */
    public void save(Student student) {
        StudentRepository.save(student);
    }

    /**
     * 更新
     *
     * @param student
     * @return
     */
    public Student update(Student student) {
        StudentRepository.save(student);
        return student;
    }

    /**
     * 删除
     * @param student
     */
    public void delete(Student student) {
        StudentRepository.delete(student);
    }


    public Student getById(Long id) {
        Student studetn=StudentRepository.findById(Math.toIntExact(id)).orElse(null);
        return studetn;
    }

    /**
     * 按工号进行查询  ，查找工号最大的教师
     */
    // 修改方法调用为findByNoStartingWith，并传入前四位工号
    public List<Student> findByMaxNoTeacher() {
        // 获取前四位工号
        String maxNoPrefix = StudentRepository.findMaxNoPrefix();
        // 查找以该前缀开头的教师
        return StudentRepository.findByNoStartingWith(maxNoPrefix);
    }
}
